#List 列表
scores=[1,2,3,4,5]
print(scores)
print(scores[0]) #通过索引取值
if 1 in scores:
    print('存在')

if 6 not in scores:
    print('不存在')

scores.append(6)
print(scores)     #添加元素到最后一位

scores.insert(2, 2.5)  #添加到索引前一个位置
print(scores)

scores.pop()       #删除最后一位
print(scores)

scores.remove(2.5)   #删除指定的那个
print(scores)

del scores[4] #通过索引删
print(scores)

scores.clear()    #全删了
print(scores)

List1=[1,2,3]
List2=[4,5,6]
List1.extend(List2)         #将2加到1里
print(List1)
print(List2)


fruits=['橙子','香蕉','苹果']
print(fruits)
fruits[0]='榴莲'          #直接替换
print(fruits)

#切片获取
List3=[1,2,(1,2,3),"aaa",[4,5,6]]
print(List3[0])
print(List3[-1][0])

#复制
List3_plus=List3.copy()
print(List3_plus)

#计数
print(List3.count(1))

#练习
friends = ["小明", "小红"]
if "zm" not in friends:
  friends.append("zm")
if "zxt" not in friends:
  friends.insert(3,"zxt")
print(friends)

scores = [85, 92, 78, 96, 88]
scores_max=max(scores)
print(scores_max)

words = ["hello", "", "world", "", "python"]
while "" in words:
   words.remove("")
print(words)

list1 = ["小明", "小红", "小刚"]
list2 = ["小红", "小丽", "小强"]
list3 = list(set(list1 + list2))
print(list3)

scores = [85, -1, 92, 78, -1, 96, 88]
scores_wx = [score for score in scores if score != -1]
avg = sum(scores_wx) / len(scores_wx)
print(round(avg, 2))


"""
集合：set 是python中的数据结构
1. 无序性：集合中的元素没有固定的顺序，所以不能通过索引来访问其中的元素
2. 唯一性： 集合中的元素必须是唯一的，不允许重复，尝试添加没用
3. 可变性： 集合是可以改变的，可以添加或删除其中的元素
"""
#无序：在集合的底层，python引入的是哈希方法来存储数据，哈希主要的目的是快速的查找，添加或者删除元素，并不保留顺序
# a = {10,20,30,40,50}
# a.add(60)
# print(a)

#保留顺序   sorted   增加
# a = {10,20,30,40,50}
# a.add(60)
# print(sorted(a))

# 集合是可变的


# 删除 remove: 删除指定的元素

# a = {10,20,30,40,50}
# # a.remove(20)
# a.remove(80)  # KeyError: 80
# print(sorted(a))


#删除随机的元素
# a = {10,20,30,40,50}
# a.pop()
# print(a)

# a = {10,20,30,40,50}
# a.clear()
# print(a)  #返回一个空的集合


#修改元素
# union
#将多个集合合并成一个集合，原集合没有变化
#返回了一个新的集合，包含两个集合中的所有的元素，并自动去重
#原集合不会修改，因为union()返回的是一个新的集合

# a = {10,20,30,40,50}
# b = a.union({10,20,30,40,50,60})
# print(sorted(b))

#update
#用于将指定的元素添加到集合中
# add只能添加一个，update可以添加多个
# 原地修改，不需要返回一个新的集合
# 可以从多个对象进行迭代更新

# a = {10,20,30}
# b = {30,40,50}
# a.update(b)  # 将 b 元素添加到 a 中
# print(sorted(a))


# a = {10,20,30,40}
#
# a.update([30,40,50,60],(70,80))
# print(sorted(a))


#在集合中，运算符的使用

a = {'安琪拉','李白','澜','镜','露娜','孙尚香','鲁班大师','廉颇'}
b = {'夏洛特','镜','安琪拉','李白','关羽','孙尚香'}

# print(a + b )  #异常： 在python中，集合不支持使用+ 来进行合并
# print(a - b)  # 求 A - B 的差集  返回A
# print(b - a)  # 求 B - A 的差集，返回 B
# print(a & b)   # 求A 和 B 的交集
# print(a | b)   # 求 a 和 B 的并集
print(a ^ b)  #对称差集：属于A 或B的元素，但是不包括属于二者的元素


#list作业
numbers = [2, 3, 4]
numbers_plus = 1
for number in numbers:
    numbers_plus *= number
print(numbers_plus)

numbers = [1, 2, 3, 4, 5, 6]
numbers_two = 0
for number in numbers:
    if number % 2 == 0:
        numbers_two += 1
print(numbers_two)

numbers = [10, 3, 7, 5, 8]
numbers_max = 0
for number in numbers:
    if number > numbers_max:
        numbers_max = number
print(numbers_max)

numbers = [-1, 2, -3, 4, -5]
numbers_sum = 0
for number in numbers:
    if number < 1:
        numbers_sum += number
print(numbers_sum)

numbers = [1, 2, 3, 4, 5]
numbers_pluss = []
for number in numbers:
    pluss = number * number
    numbers_pluss.append(pluss)
print(numbers_pluss)


